#include <iostream>

typedef void (*CallbackFun)(int, int);

class Addition
{
public:
//    void add(int a, int b)
    static void add(int a, int b)
    {
        std::cout << "Addition::add: " << a+b <<std::endl;
    }
};

void funCaller(CallbackFun p, int a, int b)
{
    p(a, b);
}

int main(int argc, char* argv[])
{
    ///error: invalid use of non-static member function ‘void Addition::add()’
    funCaller(Addition::add, 2, 5);
    return 0;
}
